package estructuras.common;

import java.util.*;


public class Vuelo implements Comparable<Vuelo>{
	Conexion conexion;
	Fecha fechaVuelo;
	boolean cancelado = false;
	int capacidad;
	ArrayList<Paquete> paquetesFijos = new ArrayList<Paquete>();
	ArrayList<Paquete> paquetesReservados = new ArrayList<Paquete>();
	
	public Vuelo(Fecha fechaVuelo, Conexion conexion) {
		this.conexion = conexion;
		this.fechaVuelo = fechaVuelo;
		this.capacidad = conexion == null ? 0 : conexion.getCapacidadEnInstanteDeTiempo(fechaVuelo);
	}

	public Fecha getFechaSalida() {
		return fechaVuelo;
	}

	public Fecha getFechaLlegada() {
		if(conexion.getOrigen().getContinente() == conexion.getDestino().getContinente())
			return Fecha.suma(getFechaSalida(), new Fecha(0, 12));
		else
			return Fecha.suma(getFechaSalida(), new Fecha(1, 0));
	}
	
	public void cancela() {
		cancelado = true;
	}
	
	public boolean isCancelado(){
		return cancelado;
	}
	
	public int getEspacioRestante(){
		return capacidad - paquetesReservados.size() - paquetesFijos.size();
	}
	
	public void addPaqueteFijo(Paquete p){
		this.paquetesFijos.add(p);
	}
	public void addPaqueteReservado(Paquete p){
		this.paquetesReservados.add(p);
	}

	public Conexion getConexion() {
		return conexion;
	}

	@Override
	public int compareTo(Vuelo otro) {
		return this.fechaVuelo.compareTo(otro.fechaVuelo);
	}
	
}
